{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import json\n",
    "import os\n",
    "import jieba\n",
    "from tqdm import tqdm\n",
    "import numpy as np\n",
    "import torch\n",
    "from openprompt.data_utils import InputExample\n",
    "from openprompt.plms import load_plm\n",
    "from openprompt.prompts import ManualTemplate\n",
    "from openprompt.prompts import ManualVerbalizer\n",
    "from openprompt import PromptForClassification\n",
    "from openprompt import PromptDataLoader\n",
    "\n",
    "from model import BertNer, BertNerLstm, BertNerPrompt\n",
    "from torch.optim import Adam\n",
    "from torch.utils.data import Dataset, DataLoader\n",
    "from datasets2 import *\n",
    "from eval import evaluate\n",
    "\n",
    "device = torch.device('cuda:0')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "dict_keys(['用户要求', '用户需求', '用户姓名', '用户地址', '业务类型', '办理日期', '办理渠道', '用户状态', '业务费用', '计费方式', '流量总量', '业务规则', '处理周期', '网络类型', '流量余额', '到期日期', '套餐外流量计费', '业务时长', '持有套餐', '流量范围', '宽带类型', '故障原因', '欠费金额', '通信质量', '剩余话费', '套餐代指', '通话时长', '账户余额', '网络质量', '流量封顶', '隶属业务', '国内被叫', '扣费日期', '国内主叫', '套餐外通话计费', 'NA'])\n"
     ]
    }
   ],
   "source": [
    "df = pd.read_json(\"../data/500.json\", dtype=\"string\")\n",
    "\n",
    "slot_text = {}\n",
    "slot_mask = {}\n",
    "\n",
    "for i in range(0, df.shape[0]):\n",
    "    logs = df.iloc[i].dialogue\n",
    "    for j in range(0, len(logs)):\n",
    "        for kv in logs[j]['info']:\n",
    "            if kv['prop'] not in slot_text:\n",
    "                slot_text[kv['prop']] = set()\n",
    "                slot_mask[kv['prop']] = set()\n",
    "            slot_text[kv['prop']].add(logs[j]['text'])\n",
    "            slot_mask[kv['prop']].add(kv['value'])\n",
    "print(slot_text.keys())\n",
    "# print(slot_dic['宽带类型'])\n",
    "\n",
    "\n",
    "# for it in slot_mask:\n",
    "#     print(it)\n",
    "#     print(slot_mask[it])\n",
    "#     print(\"--------------------------------\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "用户要求\n",
      "{'反映个问题', '取消一个卡的电话号码', '我给它取消了得了', '怎么开一百', '不要', '帮我开机一下', '多扣我的那个流量费说给我退回来', '宽带停掉。', '重新安装', '把它是那个月租调到最低吗', '可以改了', '把这个卡注销', '看一下那个现在是用的是什么套餐', '迁移', '短信提醒', '我们送回我原来的套餐', '帮我注销', '把前面给我们退掉', '：三十元你帮我能帮我取消吧', '取消掉。', '想注销了', '我的宽带不要啦', '我看一下我的账单', '你帮我看一下能不能销户', '帮我把这张卡退掉', '流量套餐包我们不需要帮我取消了', '我想注销这个号码', '取消掉', '投诉我们盐城区qq不能打', '注销', '帮我看我的号码是多少', '投诉你们这张移动的卡', '我想问一下咱那个有一个北京有一个通话圈那个服务', '你给我退一下', '给我去了', '报装', '给移动这边打电话查一下', '到今天晚上十二点吧', '给我取消一下', '重置', '想家里装一个网线', '那个套餐都减掉，我要销号', '能不能把我这个号取消', '换', '降到十九元', '什么时候能开修一下', '叫他明天过来', '查一下我二月份，嗯消费了多少钱', '个号码怎么能注销啊', '开一下机', '那业务我想取消掉', '我想注销', '把这个一个这个宽带取消掉', '打电话投诉移动', '想把这个号码注销', '还剩多多少话费', '能帮我拨一下机吗', '有个宽带能不能找找人帮我确认一下', '取消本机号码', '改回无限流量的套餐', '退费我不用了', '现在给我开', '核一下', '麻烦您尽快', '上门来看一下', '黄雪', '把这个号码下个月取消', '帮我查一下我这个信息可以提速吗？', '停掉', '反映了几个问题', '屏蔽掉那个短信', '宽带报账', '新装宽带', '想把它注销掉', '最低消费', '流量包给它取消', '把我的这个零零零零零零零零零零零这个号注销', '查一下', '变更', '上个月的参加也要退给我', '重置密码', '把它退掉', '给我取消', '把我那个，手机绑定那个网线把它取消掉', '宽带停掉', '取消我的宽带', '查一个号码', '帮我取消一下', '查询一下我这个流量怎么用的那么厉害', '其他业务可以帮我取消吗', '反映的情况', '这个号码取消', '帮我查一下', '四十个g想改低一点是吧', '查一下看我现在都有什么套餐', '上个月消费了多少钱', '流量比较划算', '帮我催一下加急', '看下话费', '开通', '把这个上网功能给关上', '我要销户', '宽带移机', '把这手机号停的', '帮我看下把它给退掉', '取消副卡', '给我取消了', '我办个临时开机', '解决信号', '我不想用外地号', '改八元自由套餐', '你帮我注销一下吧', '临时开一下机', '查看我的余额', '换成原来套餐', '我要把我这个卡交了怎么销', '要求赔偿', '取消来电这个号码', '开机关机', '拦截', '直接帮我取消掉', '退回', '你帮我把它注销了', '套餐改一下', '取消机顶盒', '我那个两个业务取消的', '确认一下我这个宽带到底是多少钱一个月', '查一下它那个移动公司那边投诉电话', '不想办这个卡', '把这个套餐帮我改一下', '打电话投诉', '查一下我这手机号，关，啊，交了多少费呀', '设置那个管理', '注销手机号码', '流量套餐比较', '删除那个客户什么八十九块那个', '你就赶紧紧急停机吧现在现在赶紧停机', '不要老是给我发一遍那些什么活动那些短信啊', '一号凌晨必须给我赠送', '这个卡给我修咯', '申请立刻给它改了', '停完机', '投诉', '这个号码在哪里的', '你帮我取消掉', '重新报装', '把那个什么夜间流量包？业务取消', '四月一号关掉', '取消这个业务', '问一下就是我之前办的这个套餐啦', '停', '帮我弄个投诉工单', '宽带要移机', '过来校园过来帮我换一个', '我们没有网络你先给我开了我交上', '销户', '呼叫转移', '办理销户', '改一个一百二十八的一个套餐', '问一下这个卡的一个月是免免月租的', '停机', '返那个一百块', '帮我把那个宽带退掉', '我这个手机号有合约嘛', '主套餐取消掉', '解决方案', '超过流量', '重新报装宽带', '能不能退', '退给我', '提醒', '要开，交费发票', '我想呼叫转移一下那个手机号', '帮我帮我帮我改掉', '我这个号码要是不要销户能销吗', '帮我取消', '取消', '查询', '联系这个号码', '你帮我查询一下', '有一个那个流量包费用返还吗', '查一下我这个宽带是多少兆的', '给我看一下我那个wifi，到什么时间', '我要注销电话的电话卡', '派个人过来检查维修一下', '手机冻结', '解开', '换成是不是有一个八块钱的套餐', '宽带我没注销也可以取消吗', '查一下，我那个呃这个流这个流量的那个它那个卡券为什么兑换不了', '那套餐他给我消掉吧', '您拨的移动号把它注销了', '取消它', '我这个号码要注销', '这卡你帮我把它取消掉', '申请注销', '全部停了', '新再安装', '资费那个什么再给我转一下', '改一下', '办理一个收注销手机号码', '补办', '我现在要减掉', '问一下', '把它改成光纤对吧', '宽带到期了我要把它关掉', '帮我转到，业务投诉部门', '给我回馈', '帮我取消那个，一块钱的', '改掉', '会员也给我取消', '关掉', '消掉套餐', '宽带给停掉', '您帮我取消掉', '看一下我这手机上是不是有', '请你给我上个月的话单的', '我就不用那个号码了', '多接的能不能去就断掉', '销一下那个健康妈去过苏州的那个', '套餐能改', '改套餐', '你现在把这个号码给我取消', '我想把我这个号销了', '帮我看一下我这张卡定向流量，呃只要用的是哪些ipp', '续', '我需要报装', '帮我销户', '不好用了', '把这张卡给我限速', '我想取消那个我那个，套餐', '我怎么销户啊', '取消套餐', '停四十八小时停卡停机', '想把那个套餐改一下', '师傅的电话', '这个卡我想注销', '我想把这个号码注销掉', '宽带', '线上销户', '我想重置一个服务密码', '宽带销户', '我这张卡是那个月租多少钱呢', '联系另外一个号码', '注销掉', '费用能不能退', '帮我停掉', '短信发', '查另外一个号码', '我想销户的业务都已经全部取消掉', '问题反馈', '我想请问一下那个登记好吗', '装宽带', '查一下我本机的这个宽带是不是现', '退掉', '给它停止一下不不能用，不能上网，然后只只能打电话', '停了上网功能', '降回之前的', '作废', '幺三九这个号它是有两张副卡能帮我取消一下', '移机', '报装宽带', '查一下我现在这个套餐是多少钱', '我想把它取消掉', '想重置一个服务密码', '我就投诉你们', '直接开机', '帮我取消掉呀', '号码不用啦', '消掉', '帮我把这个手机号注销掉', '帮我看一下吧问一下他能不能兑换吧', '预约销户', '我想问一下这个号码多一点销户它有个什么合约', '把我这个套餐改掉改改少一点', '弄成无限流量的那个', '正常销户', '五g套餐了现在要退掉', '能不能改个套餐', '副卡取消', '安装那个宽带', '要改到八块钱的套餐', '帮我停', '我查一下我这个套餐', '开通一下', '想给它注销掉', '为一个手机号码办理就是挂失停机', '退费', '办理那个销户', '我想把那个号码，预销掉', '你帮我取消了', '我办一下停机', '看一下我这个这个这个这个手机，你身份证号，就留的当时留的证件号是是是是不是原来的我的军政的号呢', '不想用了', '包月', '改一下流量包', '应急停机', '续宽带', '帮我查一下我这个月怎么消费这么多', '帮我看一下我这边那个手机信号不好', '宽带电视的套餐就帮我取消', '取消重新再安装', '要取消这个业务'}\n",
      "----------------------------------------------------\n",
      "用户需求\n",
      "{'流量包取消掉', '把上网功能给暂停', '改套餐', '降一下套餐', '申请退还', '这个月宽带到这个月底到期你帮我关掉', '没有别的什么优惠吗', '更换路由器', '应急开机', '暂停上网功能', '我的宽带啊', '发票的事情', '合同续费', '咨询一下我这个，呃宽带的问题', '销户', '线上销户', '报了一下故障', '便宜点都是那个月租', '呼转', '号码注销', '开机', '注销掉', '查一下这个号码现在', '改回去', '宽带停掉', '合作询问', '话费余额', '下个月套餐费是多少', '查余额', '最便宜的套餐', '每个月消费', '宽带也停掉', '退掉', '办理一下应急开机', '预约', '移机', '注销宽带', '取消', '查询', '更换一下那个路由器', '预约销户', '转移', '消掉', '我那个月租多少钱啊', '开通', '取消掉', '注销', '号码想注销了', '注销这个卡号', '手机号码可以注销吗', '我想咨询一下那个宽带你们这，那宽带是怎么安装的呢', '怎么再交费呀', '帮您的话更换一下光猫', '给我取消这个合约', '副卡取消', '手机号销户', '检测', '退费', '需要怎么样才能把这笔钱拿出来', '你叫师傅过来等一下吧', '处理那个卡被封顶的事情', '验证', '号码注销掉', '操作', '应急停机', '报一下故障', '重新销户', '要一个密码'}\n",
      "----------------------------------------------------\n",
      "用户姓名\n",
      "{'文武斌', '西凤伟', '第四栋', '罗县', '刘蛙泳', '张磊', '王丽明', '取消宽带电视', '北小风', '取消就是那个那个宽带电视', '老人', '杨文', '科技学院', '罗全球通', '张元院', '下船清', '刘现', '吴志宇', '何运', '王', '张村', '庭院零', '张属权'}\n",
      "----------------------------------------------------\n",
      "用户地址\n",
      "{'海州区', '株洲', '边江明珠城', '望京', '无锡地区江阴市', '呃还青江浦经济开发区', '苏州然后那个张家港市', '大江台山市大江镇公寓小学', '望京西园附近区', '四零路一百九十九号', '青岛', '黄南苑', '苏州', '交警大队', '富国里小区', '黄埔一区，六巷四号', '一百九十五号', '青江浦经济开发区', '，深圳市', '开发区南', '连云港的那个灌南县', '就近龙镇', '和东区六执政', '江苏连云港', '一单元', '人民西路', '宿迁市沭阳县', '西城区', '联播市镇海区', '北京望京西园', '六六单元', '北京然后西城区', '红花杨玉中心', '西园', '龙岗区横岗街道红棉路', '北京市顺义区', '灌南县加蔡玉锦城', '西园四区', '新北区', '横岗区', '深圳市宝安区', '湘西', '南方花园南门', '新塘是新江花园', '徐伟化工，桃园区，刷牙云龙区', '鼓楼区', '四联路一百九十九号二', '泰州市，晋江市红星美凯龙', '八栋，四零二', '朝阳', '横岗街道', '崇崇川区', '金明园', '福建福州', '广州', '一百九十八', '江市鼓楼区江东介绍，江东街道', '杨庄区', '福州', '南京建邺区', '十五号楼', '陈和西路十二号', '南门', '北京市平谷区', '南丰街道', '红星美凯龙，百福城东面', '黄南苑小区', '长阳家园就是太路甲八十八号', '北京市朝阳区', '通州', '湖南', '福建', '新塘街道', '金祥都市花园', '深圳', '木屋区口西口提供那个十东路，二百九十八号，三十九', '乐昌市沙坪镇', '丰台区菜户营甲八十八号', '榕城北区', '新北区滨江', '海淀区', '三零三', '北京市石景山区苹果园东口', '望京西园四区', '园博园', '鼓楼区南京市鼓楼区', '江苏靖江红星', '南方花园', '通州区', '湖北', '连云港', '姑苏这边关机'}\n",
      "----------------------------------------------------\n",
      "业务类型\n",
      "{'电视服务', '宽带使用费用', '空中学', '亲情网业务', '全球通亲情网', '流量折扣券', '流量活动', '月费优惠', '流量减免', '话费', '副卡', '预付费', '二十块钱的流量套餐', '花卡套餐', '家庭宽带', '宽带电视功能费', '摄像头', '电话卡', '月租', '全wifi', '机顶盒联网', '流量月包', '流量升级', '宽带，宽带转移', '电视', '万能副卡', '账单', '退回', '宽带费用', '超级会员随心完', '宽带套餐费', '流量包', '家庭市场宽带套餐', '报一下故障', '家庭亲情网', '掌上营业厅', '二十元', '全国亲情网', '头条的语音包', '日租卡', '销户', '优惠', '电视费用', '月租费', '二十块', '网络宽带套餐', '空中学堂', '退还', '装机顶盒', '乐都乐东国际石材市场。', '流量套餐', '移动宽带电视', '报那个故障', '套餐', '宽带电视', '副卡共享', '二十九', '流量，活动', '宽带月租', '摄像头业务', '银行大道', '流量', '云南房转', '机顶盒', '宽带', '预存话费', '宽带销户', '日租卡套餐', '宽带取消', 'wifi', '解约取消', '四g套餐', '摄像', '九块钱语音包', '光宽带', '合约机', '本机宽带', '安装费', '手机语音套餐', '流量红包', '亲情网'}\n",
      "----------------------------------------------------\n",
      "办理日期\n",
      "{'十一月二十三号', '一月九号', '十一月份', '九月份', '去年七十八号八月一号', '今年二月二十二号', '六月份', '今年的二月份', '三月一号', '三月二号', '四月份办的去年', '十二月二十二号', '三月十三号', '二一年的一月份', '十二月九号', '二月二十三号', '四月一号', '三一月十七号', '二零年九月一号', '三四天了', '三月十五号', '二月十二号', '一九年的九月十九号', '八月份', '五月一号', '十二月三十号', '一一年一月十一号', '二月份', '去年四月份', '二零二三年三月份', '三月十五号就今天十七点四十二分', '二十三号', '二零二一年七月二十号十四点五十七分十八秒左右', '一月一号', '一月十七号十二点零四分', '一个移动礼拜之前', '一月十八号', '月初', '今天', '上个月', '四月份', '下月'}\n",
      "----------------------------------------------------\n",
      "办理渠道\n",
      "{'掌上营业厅', '携带有效证件到营业厅进行注销', '二零二四年的一月一号', '服务台', '资费顾问', '网上', '营业员', 'app', '这边的营业厅', '服务厅', '回访电话', '北京移动ap', '到营业厅', '佛山', '柜台', '在线', '营业厅', '需要到营业厅办一下', '带身份证原件去营业厅', '电话', '中国移动app', '线下的营业厅', '到那个北京移动营业厅拿身份证', '人工', '移动营业厅', '线上', '到营业厅去', '短信', '移动大厅', '客服', '广州营业厅', '二零二一年八月十九号', '营业部', '人工台', '归属地的营业厅', '取消的话需要到营业厅', '四十八小时', '线下渠道', '本人携带身份证到移动营业厅办理', '带上您的身份证还还要服务密码到四川的营业厅去办', '打电话过来', '快手', '人工服务', '营业大厅', '京东', '携带本人身份证到，号码恢复在此的营业厅', '国移动，ap', '归属地指定的营业厅', '线下营业厅', '带上光猫到营业厅取消', '二零二零年的十二月份', '本地的营业厅', '归属地移动营业厅', '宽带服务站', '人工服务台', '让营业厅去接也', '电视办理', '佛山市的一个沟通一百营业厅', '微信', '在线处理', '去营业厅', '到窗口营业厅来', '手机app', '当地指定的柜台', '带她本人带身份证去当地营业厅', '归属地营业厅', '人工客服', '拨打电话', '四川的客服', '中国移动营业厅', '营业厅办理', '到营业厅去取消', '移动掌上营业厅上面有移动商城', '中国移动ap', '拿着身份证去营业厅'}\n",
      "----------------------------------------------------\n",
      "用户状态\n",
      "{'停机状态', '没网络没网络', '正常开机', '信号不好', '优惠到期', '信号怎么特别慢', '打不出去电话', '没有收到', '卡那就', '收不到信息啊', '我的宽带不要啦', '停机了', '无法使用', '正常', '收不着验证码', '我在外地', '宽带不能用', '网速很慢', '信号是正常', '还可以用', '收不到的那个无线网', '我已经不在这里了', '退出', '网速确实有点慢', '正常打电话', '列入黑名单', '报装了一个宽带嘛怎么老是不帮我转不不不联系我', '关机重启了，也不行。', '幺三九二二四零七零二六', '法使用', '会员状态都正常', '突然间就用不了了', '上不了网', '那个网线啊，赠送那个上次那个写在呀下来现在没人来处理', '没有网络没法充值', '我搞的身份证已经允许通过了', '宽带还是取消不了', '收不到验证码', '特别慢', '没有欠费', '宽带经常掉网', '开机', '手机停机了', '网络，呃非常非常非常非常的差', '微信不能正常使用', '手机现在收不到支付宝验证码', '没有那个电视台', '多年不在不在浙江那边了', '电视也看不了', '看不了', '我要销户', '网络老是用不了', '原卡分离时合约暂停', '网络用不了', '不稳定', '装宽带到现在还不用啊', '优惠是到期', '它给我停机', '成功了', '上了一下子就断线了', '我们村它是一九套餐省', '家里网络没有了', '人都没有在广东', '光纤的那个插头拔了然后再插上去还是那样子', '用不了', '很卡', '宽带上不了网', '信号都不好', '那么卡', '腾讯会员用不了', '不能正常的接收电话', '没网络', '计费正常', '停机', '手机停机了在外面没没法交话费', '欠费停机', '只能看直播不能不能看回放', '欠了八毛', '网络不好', '我不是网上买的卡', '没解决', '取消', '不能通话', '欠费', '帮我看一下看看办办理成功', '手机欠费', '不能用四g网络', '我一直以来都没有用过', '收不到信息', '信号老差', '突然没网了', '第二几分钟自动挂断', '我那个之前都不记得了', '没办法用网络', '没有wifi', '不取消', '信号不太好', '自动挂断', '网络是用不了', '我的积分要用了', '网速很慢点', '自动就没网', '显示那个线路没什么问题', '已经零取成功了', '没有网络', '离线的', '回看功能用不了', '宽带上不到网', '接不着电话', '我拿身份证不不那个连不连接不了', '没有取消', '月租多少', '宽带暂时无法使用', '这个号码是正常的', '我现在不在不在那个呃这样我现在在北京', '几个月都不行', '兑换不了', '领取到账', '预约了', '取消一个五五八的短号', '一打电话就断', '欠话费停机', '没问题', '不能上网', '我一直都是在我一直在江西', '现在还没用了都欠费了', '卡被封了一直没有跟我处理好', '不能用四g四g网络', '套餐到期'}\n",
      "----------------------------------------------------\n",
      "业务费用\n",
      "{'五十九', '三十五', '六十块钱', '三十九元', '四十一块五毛八', '三十二', '五十九块钱', '一百六十多', '一百一十九块钱', '一百二十八元', '二十九块', '一零零四', '二十八', '一百块', '六三', '十四块钱', '六九', '三十八', '一共是两百五十块钱', '八十四块九毛六', '一百一十一块钱', '一百七十八。', '八十块钱', '六十', '四十八块', '五十八', '九毛钱', '负的四十七块钱', '三十元', '一百四', '一百九', '九九块钱', '幺六九', '十九块', '二百零九', '一百六十六', '一百多块钱', '五十八块钱一个月', '一百多诶', '八十八元', '七十', '一百多的', '三十八块四', '四十九', '五十八块钱', '五十六块钱', '一百四十块四', '五佰元', '九十八元钱', '二百一十四', '五十九块七毛钱', '十五元', '二十五块钱', '两百五十七块钱', '两块钱', '一百六十九', '八十九元', '八十八', '十九块五毛七', '三百六', '四十', '五十元', '八十八块', '一百二千九十', '五十块钱', '十九', '十八块钱', '一百四十九', '二十八块钱', '十九块钱', '一百二十八块钱', '三百三百块钱', '六十来块钱', '三十八元', '一百四十八元', '七十块钱费用', '五块钱', '五十八元', '七十九', '四十多块', '十九块九', '五十', '二十九块钱', '一百五十七块九毛钱', '月租一个八块', '二十', '一百八', '十块', '十七', '一百二十块钱', '一百二十八', '一百二', '七十八', '七十八块钱', '八十九块钱', '七十一', '十六', '八块钱', '幺三九', '九十块钱', '一百五', '十块钱一个月', '一百八十', '十块一个月', '二十元', '首月一元', '五十多', '三十五块', '一百多', '七十多块', '四十元', '四十八', '十元', '一百零八元', '二十块钱', '一九九', '一百零八', '九十三块四毛三', '一百四十四', '九十八', '二十块', '一百九十八块多', '五十五', '十八块十八块', '一百九十八', '三十五块多', '一百四十八', '十九元', '十七块钱', '三十块', '五百元', '一百五十块', '一百块钱', '十二块', '六十九块钱', '九十', '九块钱', '免费体验十二个月', '六十三', '一百多块', '八十', '三十', '一百九十一', '改一下', '一百四十块钱', '一块钱', '三十块钱', '七十几', '九百块钱', '二十九', '十五块钱', '七百', '六七十块', '一块', '一百二十九', '一百', '幺九九', '九九', '二百九十八', '三十九块钱', '安装费两百块', '六十八元', '一百三十七块六', '三十多块钱', '三百块钱', '一个一百五十八', '一百元', '五十九元', '六十八', '一百九十九', '六块您', '一百五十八', '六块钱', '二十九元', '一百四十几', '一十八元', '三毛钱', '一百二十', '六十九', '一百八十九', '一百一十九元', '一百四十四块钱', '一百二十九块五', '二十五', '七十块钱', '三十九块', '七十五', '一共消费一百六十一块一毛', '十块钱的', '四十块钱', '月租费一百二', '三百多', '二百三十九', '八十几块钱', '每个月一百二十八', '一百五十七', '十八块', '一百七十九块钱', '九块五', '五十九块', '十块钱', '一百四一百四', '一百七十九', '四五十块钱', '一百六十', '十八', '一百五十多', '六十多块钱', '八块', '四十四', '一百一十九', '四十四块钱', '几十块钱', '一百三十九', '三十八块钱', '八十九', '三十九'}\n",
      "----------------------------------------------------\n",
      "计费方式\n",
      "{'三十元一个月', '一毛九一分钟', '每个月三十块钱', '三十元四十个g', '九元一个月', '一千四百七十块钱一个月', '五块钱的一个月', '可以减免一百五十块钱', '一分钟是三毛九', '四十元四g', '三十块钱是二十个g', '四十元四个g', '六十八一个月', '固定六十九', '三十块钱二十g', '每个月都会额外收您五十块钱您话费', '三十元', '三十个g每个月七十', '一月两月每个月的话是，g呃七十块钱', '十块钱十个g', '一个月十块钱', '一块钱做五个g', '十块钱五个g', '一月就扣五块钱', '三十九块钱一呃，一个月', '四十块钱是四十个g', '九块钱三g', '一毛钱一分钟', '月付三十块', '两毛五一分钟', '九十三十g流量两百分钟通话', '三十块钱，二十个g', '三十块钱一个月', '十元一个月', '每个月三十', '到四月份的话就是五块钱', '三十元二g', '六十块钱一个月', '十二块钱一个月', '三十块钱一个g', '六十块钱一个g', '三十九块钱一个月', '三十元二十个g', '五块钱一个g', '十九一个月', '两千七百四十七块', '超出一个加一块', '呼叫转移费一毛钱一分钟', '三十元五个g', '三个月七十', '一个月二十块钱', '一元提速两百', '十块钱一个月', '每个月二十九块钱', '二十块钱一个月', '二十块钱二十个g', '一块钱一g', '一分钟一毛', '月租呢是给二十九只是您的宽带和电视的话这里总共的话是要交五十。所以加在一起的话就七十九', '九十八块钱一个月', '十块钱多二十个g', '三十块钱二十个g', '八块钱一个月', '二九元每一天那个十九块钱一个月', '一块钱一个g', '九块钱四十分钟', '一块钱送倍送五个g', '五块钱一个月', '五十块一个月', '三十多块钱了一个月', '按月扣十块钱', '九十块钱二百分钟', '每个月呢是二十块钱', '四十元四十g', '每个月六元', '二十元二十个g', '四十元四十个g', '一个月二十多块钱', '二十块钱多三十个g', '五十八块一个月', '二十块一个月', '二十九块钱一个月', '两毛九一兆', '五十块钱一个月', '一万三千六百五是固定的四个', '三毛九一分钟', '每个月是二十九块钱', '二十九块钱五扣费', '下个月开始一块钱一个月', '四十八元一个月', '四十块钱四十个g', '十块钱五个g七天', '九十几个月', '五十块钱八个g', '三十八元三个g', '一月二月这两个月都会按人家收费一百九十一元', '前六个月三十五后六个月是不收费的，十二个月过后就要收七十元一个月。', '免费', '每分钟一毛钱', '一天一块钱', '六十八元每个月', '八元一百兆流量', '二十九块一个月', '十八块钱一个月', '三十九块钱五个g', '十五块钱十个g', '每个月交十块钱', '三十块钱四十个g', '十九块钱一个月', '一百二十九每个月', '十块钱', '一百八十九每个月', '一个月二十五块钱', '每月九十块钱', '三十八一个月', '三十块钱二十', '五元一g', '四十九块钱一个月', '六十八块钱一个月'}\n",
      "----------------------------------------------------\n",
      "流量总量\n",
      "{'一百三十g', '三十几g', '四十个g', '五点五个g', '十五个g', '二十个g月包', '五百兆的流量', '三个g流', '十个g', '五个g流量', '宽带', '五gb', '一百兆的流量', '二十个g', '七十g', '一千八百兆', '四g', '四十g', '三十g', '一点五五个g', '五十兆', '六十g', '六十九', '八个g', '七十个g', '二十g', '六g', '一百九十二点六g', '四五g', '三十g流量', '三十个', '六十个g', '一百兆', '五百兆', '十几个g', '九十个g', '一百个g', '二十个g的流量', '六点五个g', '十五个g流量', '一百五个g', '五十个g', '三十个g', '五十g', '宽带服务', '三个g', '五g', '十g', '五个g', '套餐', '三十', '四十四g', '三百个g', '二百三十九兆', '一点五个g', '一个g', '十五g'}\n",
      "----------------------------------------------------\n",
      "业务规则\n",
      "{'不收费用', '一毛九一分钟', '优惠三十块钱', '一个月三十', '自助销户', '减免二十块钱', '首月是扣原价的第二个月才是有那个优惠', '减免二十三十九', '如果客户端生效第一个月的话取消需要加到十七块钱违约金第二个月的话加两块然后这个月的话您要取消的话违约金就是。七是吧十九', '月费减免', '保底三十八', '优惠四十块', '七折', '减免十五元', '五十减三十', '一分钟是三毛九', '每个月十块', '每月减免十块钱', '预存十元加一百二十元话费', '到期自动失效', '优惠期到今年八月底到期', '免费赠送四十g', '减免五十块钱', '优惠八十，优惠之后是一百一十九', '一块钱五个g', '返还十九元话费', '赠送三十九块钱', '打折二十块钱', '一月份减免', '需要到营业厅', '单独收费', '减免了八十四块钱', '当月未用流量需要清零', '一百二嘛给您减了五十块钱', '每个月给您返十块钱', '自动销户', '不会自动取消', '年包', '每个月送十个g', '分半个月每个月给您返十块钱', '减免三十块', '减免了四十块钱', '免费一年的宽带是要使用七十九以上的套餐才能办理', '减免六十块钱', '自动取消', '一个一毛九一分钟', '减二十', '自动销', '减免三十', '每月的话是给您减免三十', '一百元流量包是有五十的优惠', '一百九十九减免八十自己付一百一十九', '减免十块钱', '每个月给您减免六十元', '十元两个g二十元五个g三十元十个g', '一毛钱一分钟', '优惠期是六个月', '减三十的优惠', '一毛钱一分钟。', '优惠七十八', '二十四个月返还', '两三日之后自动开机', '自动生效', '赠送', '免了一个六十', '三十五块钱的优惠', '优惠十块钱', '提前终止需要违约金', '自动开机', '先从您的余额里扣，然后扣完之后呢，然后才能把您这个费用给您申请返还', '优惠一年', '减免八十的优惠收费还是一百一十九', '减免四十八', '免费使用', '减免十块', '违约金', '减三十', '续约', '优惠八十', '每个月减免九十', '减免六十', '消费满有十块钱', '一个月二十', '打折四十块钱', '六个月合约', '承诺套餐九十块钱', '十块钱一个月', '一百块送五十块', '八十八元优惠了五十然后活动时间二十二个月十二个月活动期内每个月三十八', '每个月送了你三十块钱', '减免这个费用', '按原价收费', '二十块钱一个月', '五十抵扣', '优惠二十元', '一百四二十块钱话费加八十块钱消费抵扣', '宽带年包', '减六十', '一年免费', '一百二减五十', '抵欠费', '不会自动取消掉', '优惠二十块钱', '初装费', '退还', '电话提醒', '打折二十块', '送了一个五个g', '返十块钱', '扣了再给您返还的', '每个月给您减十块钱', '每月减免一百', '免费体验十二个月', '自动失效', '免费使用二十四个月', '上个月没有用完可以结转本月继续使用的', '优惠减免六十', '五十可以减免', '二十元的优惠', '不收取费用', '减免八十', '两年的合约', '减免', '每天一块钱一个', '七折优惠', '优惠了八块一', '充值一百然后返八个月', '减二十块钱', '第一年免费', '两年', '每个月都赠送给您一百分钟', '返还', '你一年的话就是二十九给您打折七十块嘛就是十九块', '一年不可以取消', '减免五十元优惠', '九元三g', '减免三十块钱', '两年的合约期', '赠送十块钱', '五十九元', '一百六十九优惠八十', '自动消费', '减免了十五元', '定向流量三十个g', '绑定收费', '减四十块钱', '不自动续订', '免费', '见面八十', '减六十的优惠可以申请半年', '保底消费三十八元', '六个月的一个合约', '一年后自动关', '五十折扣', '会返还给您的它是会扣了再给您返', '体验十二个月', '累计', '三十块钱四十个g', '打电话一毛九', '支付违约金', '减三十元', '使用一年时间', '全额返还', '一年期间免费', '到期之后您这边没有取消的话就变成一百零八原价', '一百二十八直降八十', '免费一年', '自动关闭', '优惠六十', '打电话是[@一毛钱一分钟', '优惠十块', '优惠了一个八十四块钱', '返十块'}\n",
      "----------------------------------------------------\n",
      "处理周期\n",
      "{'半个多月', '二十四小时之内到账', '二十四小时之内', '两天', '七个小时', '四小时之内', '四十八', '月底', '十一点之前', '一个月之内', '二十四小时内到账', '二十四小时', '营业厅', '四十八小时之内', '十八小时', '一天之内', '明天下午两点半之前', '四十八小时', '四个工作日', '七十二小时', '四十八小时左右', '四十八小时以内', '七个工作日之内', '十四天', '七个工作日到账', '下个月二三号', '明天左右', '四十八个小时', '二十四小时内', '二十四个小时', '两个小时', '在二十四小时到账', '下月', '七个工作日', '四十八小时内'}\n",
      "----------------------------------------------------\n",
      "网络类型\n",
      "{'四g', '五g', 'wifi', '无线网'}\n",
      "----------------------------------------------------\n",
      "流量余额\n",
      "{'六十个g', '二十四个g', '十四个g', '三十多个g', '五个g', '四十二点四g', '二十四点二三', '一个g九百多九百多兆', '五点二十七g', '四十个g', '七十八个g', '一百二十兆', '二十九点一七'}\n",
      "----------------------------------------------------\n",
      "到期日期\n",
      "{'九月份', '二零幺三到四月份', '这个月底', '六月十六号', '八月十六号', '次日二十四点', '十一月底', '今年的十一月一号', '十二点', '二零二零二三年四月一号', '明天晚上十二点', '七月份', '上个月结束了', '下下个月月底', '九月一号才到期', '十二月份', '八月十二号', '八月一号', '这月底', '明年九月底', '二零二三年的九月底', '五月底', '到七月十八号', '四十八小时', '二三年九月一号', '二零一四年二月一号', '六月一号', '二零二一年的一个十一月底', '十二月底到期', '二零二零年十月底', '四月份', '这个月的月底', '二二年的一月份', '十二月', '十二月底', '明天晚上二十四点', '下个月', '明年的二月份', '一月份', '下个月一号', '今年八月一号', '二零二二年四月一号', '三月十四号', '七月底', '八月份', '二零二三年四月一号', '二十八号', '七月十八号', '十月份', '二三年', '七月十一号', '三月份的月底', '这个月', '明年四月一号', '六月底', '二零二四年的一月一号', '九月一号', '五月份', '两天', '二零二三年四月份', '二零二三年的二月二十八号', '月底', '本月十九号', '四月一号', '下个月底', '这个月月底', '二零二三年的四月一号', '五月一号', '十月份到期', '三月三十一号', '一月十九号', '十月底', '四月底', '九月一号结束', '十一月一号', '二一年的十二月', '本月这周'}\n",
      "----------------------------------------------------\n",
      "套餐外流量计费\n",
      "{'五块钱一个g', '一百二十块钱', '十块钱一g', '三十块钱', '三百元', '三十五块三毛八', '一兆是按两毛九', '一百五十块', '六十块', '三个g之后三块钱一个g', '五块', '十块钱'}\n",
      "----------------------------------------------------\n",
      "业务时长\n",
      "{'两年', '两百', '两百分钟', '一年', '三十分钟', '两个自然日', '两百三十', '七百分钟', '时续十二个月', '五百三十', '六个月', '两百三', '十二个月的', '四十八小时', '一年呢', '五百分钟', '两年二十四个月', '两百三十分钟', '一千分钟', '一百二十分钟', '二十四个月', '三百分钟', '六十分钟', '一百分钟', '十二个月', '三十块钱', '四十分钟', '两年两年', '四五十分钟', '一百三十分钟', '半年', '一百', '二百分钟'}\n",
      "----------------------------------------------------\n",
      "持有套餐\n",
      "{'十九元终端全月', '两百兆宽带', '五十九', '六块钱的视频彩铃', '八十九套餐', '五g畅享套餐个人版', '特惠三十块钱', '头条包', '九十块的活动', '换卡套餐二十九块钱', '两百五十九', '全国亲情网业务', '五十九元流量套餐', '六十八套餐', '一百五十八', '五十九的套餐', '一个一百五十八块钱套餐', '家庭市场网', '四十八套餐', '九十八', '五十九元套餐', '六块的视频彩铃', '套餐九元', '五元', '六十九', '六元最想包', '五十八的套餐', '五g爱看飞享会员', '六十八块钱套餐', '原价二十九', '五十八元四g飞享套餐', '九十八的套餐', '五十元升级版', '六块钱的视频', '荔枝tvip暂时包', '和家庭分享业务', '五块钱基础套餐', '一百三十九块钱套餐', '五块钱', '六十九的', '五十八', '爱熊熊卡套餐', '十九的话卡套餐', '五十九升级版', '九十', '荔枝被歪暂时娱乐包', '一百八十八', '八十九块钱的套餐', '五十二块正常会员', '保底二十九', '九元档', '五块钱套餐', '三百打一年', '六块钱的彩', '五g', '五十块钱的畅聊包', '二十块钱的万能副卡', '来电提醒一块', '一百九十九套餐', '五元基础套餐', '一百一十九块钱的套餐', '二十九', '八元的套餐', '十块钱，五个g', '一百二十九', '十块钱五个g', '五十九套餐', '套餐九块', '一百二十八的套餐', '六十八块钱一个月', '特优惠五五七'}\n",
      "----------------------------------------------------\n",
      "流量范围\n",
      "{'二十个g', '省内', '咪咕视频', 'ap', '省内流量', '异地', '爱奇艺', '腾讯', '抖音', '通用流量', '国内', '腾讯视频', '国内流量', '国内通用', '定向流量', '全国'}\n",
      "----------------------------------------------------\n",
      "宽带类型\n",
      "{'二百兆', '一千兆', '两百兆', '三百兆'}\n",
      "----------------------------------------------------\n",
      "故障原因\n",
      "{'二十八的套餐', '上不了网', '线路是不正常', '没有人接听', '增值类短信', '打电话打不出去', '宽带啊那个网不行啊不稳定', '线路方面的问题', '认证失败', '账号已经注销了', '太慢了', '宽带没办法使用', '无人接听', '宽带换，上不了网了', '客户端', '网络坏了', 'td固话', '电源关闭了', '区域覆盖比较弱', '敏感的增值信息'}\n",
      "----------------------------------------------------\n",
      "欠费金额\n",
      "{'三百三十块八毛三', '二十九块三', '二十一块三毛四', '三毛钱', '欠六十二', '七十八块四毛三', '一块零五分', '一百五十二块八毛三', '三百', '三十一块三毛九', '二十九块钱', '七十九块钱', '三毛', '欠了六十二块零五分'}\n",
      "----------------------------------------------------\n",
      "通信质量\n",
      "{'四g的没有', '一格', '没有信号', '质量那个太少了这个', '没什么信号', '信号特别不好', '没信号', '两个', '信号不太好', '接不通电话。', '断断续续断断续续', '要打几遍才能，接通了'}\n",
      "----------------------------------------------------\n",
      "剩余话费\n",
      "{'九十五块一', '二百八十三块零五分', '十块钱话费', '八十三块钱', '三十九块八毛三', '四十六块四毛四', '九十五块七毛一', '五块八毛一', '一百块四毛六', '二十三块五毛三份', '二十块钱', '十几块钱'}\n",
      "----------------------------------------------------\n",
      "套餐代指\n",
      "{'十八套餐', '五十九', '五g特惠流量包', '飞跃合约', '一百七十九的', '一块钱的集团网', '三十八的', '一百一十九块钱套餐', '七十八块钱的', '八十八元套餐', '三十分钟', '八十八', '十九的', '八十九的', '五十九的', '一个一百一十六的合约', '十五块钱会员', '一百零八', '三十九块钱的套餐', '五十九块钱套餐', '九十八', '七十九以上的', '一百零八套餐', '幸福卡套餐', '三十三个g', '八十九', '一个八块钱的套餐', '五g三十块钱套餐', '七十八的', '三十块钱就五g流量那个套餐', '九十八的套餐', '五十九话', '一百五十八的畅享套餐合约', '十块钱的', '三十八元', '七十八的套餐', '六十九的', '五十八', '四十九的', '十九块九', '五十八的', '八十g', '四十个g套餐', '八十九元套餐', '三十元二十g的', '三十三个g的', '一百二十八', '一点五个g流量', '八十九块钱', '一百二十九', '一百元国内', '七十块钱四十个g那个优惠的活动', '八十八的', '家庭亲情网', '一百三十九', '亲情网', '十八的', '一百二一百元三十个g还有八十块钱二十个g这些都有'}\n",
      "----------------------------------------------------\n",
      "通话时长\n",
      "{'两百分钟', '三十分钟', '二十分钟', '免费拨打六十分钟电话', '通话一百分钟', '一百五十分钟', '五百分钟', '两百三十分钟', '一千分钟', '一百二十分钟', '四百分钟', '五十分钟', '三百分钟', '六十分钟', '一百分钟', '三十分钟通话', '一百零一分钟', '九十分钟', '二百分钟'}\n",
      "----------------------------------------------------\n",
      "账户余额\n",
      "{'二十', '一百四十九块七毛', '三百块钱', '二十块二毛', '一块八毛五'}\n",
      "----------------------------------------------------\n",
      "网络质量\n",
      "{'电视看不到', '网速够慢', '用不了', '正常在线', '信号太差', '没信号', '上不了网', '上网不能上', '宽带上不了', '波动太大了是好时坏的，一点都不稳定', '没有网络', '显示有网络信号但是所有东西都打不开', '网线用不了了', '没网络', '在线', '到外地不不能用呢', '上网都上不了', '宽带它呃，呃掉线了', '信号也不好', '宽带没办法使用', '一直都没有信号', '网络怎么一打游戏就卡', '流量不动', '四g网没法用', '正常', '五g网络用不了就用不了', '我的宽带现在一直一直没有网络', '手机没有网络', '四g网络', '没流量', '没有信号', '发信息出去发不出去没有流量', '不行', '电视用不到', '上网很慢了吧', '断线了断线呢'}\n",
      "----------------------------------------------------\n",
      "流量封顶\n",
      "{'需要到营业厅'}\n",
      "----------------------------------------------------\n",
      "隶属业务\n",
      "{'五g流量包', '监控志云存储', '电视服务', '全国亲情网', '宽带电视机顶盒', '月租', '宽带换地址', '上网功能', '日租卡', '全额开票', '集团网', '特惠流量包', '加量不加价的活动', '五g特惠流量', '宽带wifi', '流量加量不加价', '长校园', '移机费', '套餐流量优惠减免三十活动', '接入费', '这个减免五十块钱的一个活动', '家庭网', '统一支付', '家庭v网', '电视费', '视频彩铃', '五一特惠包', '全球通', '网线宽带', '盒分机购机活动', '一个三十块钱的五g特惠流量包', '合约活动', '减免五十块钱的活动', '爱心上网流量包', '固定费用', '一号多宽', '合约机', '调测费', '套餐不变送一个手机活动', '携号转网', '违约金', '安装费', '一代多宽', '一个活动它有优惠七十的', '套餐', '二十四小时内', '宽带电视', '减免优惠活动', '视频彩铃基础会员', '中国移动会员', '流量包', '移动花卡宝藏版', '十元流量包', '来电提醒', '一块钱和留言，两块钱来电显示', '神州行', '亲情网'}\n",
      "----------------------------------------------------\n",
      "国内被叫\n",
      "{'免费'}\n",
      "----------------------------------------------------\n",
      "扣费日期\n",
      "{'每个月十四号', '四月一号', '十八号', '四月份', '一二号结算了'}\n",
      "----------------------------------------------------\n",
      "国内主叫\n",
      "{'一毛钱每分钟', '一毛九一分钟', '一毛钱', '一毛钱一分钟'}\n",
      "----------------------------------------------------\n",
      "套餐外通话计费\n",
      "{'九毛钱', '十五块九毛六'}\n",
      "----------------------------------------------------\n",
      "NA\n",
      "{'咪咕', '一百零九块五毛五'}\n",
      "----------------------------------------------------\n"
     ]
    }
   ],
   "source": [
    "# print(slot_mask['宽带类型'])\n",
    "# print(\"\\n\".join(slot_text['宽带类型']))\n",
    "\n",
    "# print(slot_mask['网络类型'])\n",
    "# print(\"\\n\".join(slot_text['网络类型']))\n",
    "for key in slot_text.keys():\n",
    "    print(key)\n",
    "    print(slot_mask[key])\n",
    "    print(\"----------------------------------------------------\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [],
   "source": [
    "dataset = []\n",
    "test = pd.read_csv(\"../data/prompt/samle.txt\")\n",
    "for i, text in test.iterrows():\n",
    "    dataset.append(InputExample(guid=i,text_a=text.values[0]))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Some weights of the model checkpoint at bert-base-chinese were not used when initializing BertForMaskedLM: ['cls.seq_relationship.weight', 'cls.seq_relationship.bias']\n",
      "- This IS expected if you are initializing BertForMaskedLM from the checkpoint of a model trained on another task or with another architecture (e.g. initializing a BertForSequenceClassification model from a BertForPreTraining model).\n",
      "- This IS NOT expected if you are initializing BertForMaskedLM from the checkpoint of a model that you expect to be exactly identical (initializing a BertForSequenceClassification model from a BertForSequenceClassification model).\n",
      "tokenizing: 39it [00:00, 1695.25it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "宽带类型\n",
      "宽带类型\n",
      "网络类型\n",
      "宽带类型\n",
      "宽带类型\n",
      "宽带类型\n",
      "宽带类型\n",
      "宽带类型\n",
      "网络类型\n",
      "宽带类型\n",
      "宽带类型\n",
      "网络类型\n",
      "网络类型\n",
      "宽带类型\n",
      "宽带类型\n",
      "宽带类型\n",
      "网络类型\n",
      "宽带类型\n",
      "宽带类型\n",
      "宽带类型\n",
      "网络类型\n",
      "网络类型\n",
      "网络类型\n",
      "网络类型\n",
      "网络类型\n",
      "宽带类型\n",
      "网络类型\n",
      "网络类型\n",
      "网络类型\n",
      "宽带类型\n",
      "网络类型\n",
      "宽带类型\n",
      "网络类型\n",
      "网络类型\n",
      "宽带类型\n",
      "网络类型\n",
      "网络类型\n",
      "网络类型\n",
      "网络类型\n"
     ]
    }
   ],
   "source": [
    "\n",
    "classes = [ # There are two classes in Sentiment Analysis, one for negative and one for positive\n",
    "    \"宽带类型\",\n",
    "    \"网络类型\"\n",
    "]\n",
    "dataset = []\n",
    "test = pd.read_csv(\"../data/prompt/samle.txt\")\n",
    "for i, text in test.iterrows():\n",
    "    dataset.append(InputExample(guid=i,text_a=text.values[0]))\n",
    "\n",
    "plm, tokenizer, model_config, WrapperClass = load_plm(\"bert\", \"bert-base-chinese\")\n",
    "\n",
    "\n",
    "promptTemplate = ManualTemplate(\n",
    "    text = '{\"placeholder\":\"text_a\"}是{\"mask\"}的宽带',\n",
    "    tokenizer = tokenizer,\n",
    ")\n",
    "\n",
    "promptVerbalizer = ManualVerbalizer(\n",
    "    classes = classes,\n",
    "    label_words = {\n",
    "        \"宽带类型\": [\"一百兆\",\"二百兆\",\"两百兆\",\"三百兆\",\"一千兆\"],\n",
    "        \"网络类型\": [\"四g\", \"五g\", \"wifi\", \"手机流量\", \"无线网\"],\n",
    "    },\n",
    "    tokenizer = tokenizer,\n",
    ")\n",
    "\n",
    "promptModel = PromptForClassification(\n",
    "    template = promptTemplate,\n",
    "    plm = plm,\n",
    "    verbalizer = promptVerbalizer,\n",
    ")\n",
    "\n",
    "data_loader = PromptDataLoader(\n",
    "    dataset = dataset,\n",
    "    tokenizer = tokenizer,\n",
    "    template = promptTemplate,\n",
    "    tokenizer_wrapper_class=WrapperClass,\n",
    ")\n",
    "\n",
    "\n",
    "# making zero-shot inference using pretrained MLM with prompt\n",
    "promptModel.eval()\n",
    "with torch.no_grad():\n",
    "    for batch in data_loader:\n",
    "        logits = promptModel(batch)\n",
    "        preds = torch.argmax(logits, dim = -1)\n",
    "        print(classes[preds])\n",
    "# predictions would be 1, 0 for classes 'positive', 'negative'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Some weights of the model checkpoint at bert-base-chinese were not used when initializing BertModel: ['cls.seq_relationship.weight', 'cls.seq_relationship.bias', 'cls.predictions.bias', 'cls.predictions.transform.LayerNorm.weight', 'cls.predictions.decoder.weight', 'cls.predictions.transform.dense.weight', 'cls.predictions.transform.dense.bias', 'cls.predictions.transform.LayerNorm.bias']\n",
      "- This IS expected if you are initializing BertModel from the checkpoint of a model trained on another task or with another architecture (e.g. initializing a BertForSequenceClassification model from a BertForPreTraining model).\n",
      "- This IS NOT expected if you are initializing BertModel from the checkpoint of a model that you expect to be exactly identical (initializing a BertForSequenceClassification model from a BertForSequenceClassification model).\n",
      "  0%|          | 0/537 [00:00<?, ?it/s]\n"
     ]
    },
    {
     "ename": "NameError",
     "evalue": "name 'ids2tokens' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[1;32m~\\AppData\\Local\\Temp\\ipykernel_23608\\966539767.py\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m     43\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     44\u001b[0m test1(load_path=r'../saved/bert_base_crf_train_data_1027_2/epoch_99_0.368567_0.358108_0.363258_0.530220_0.473765_0.500400.pt',\n\u001b[1;32m---> 45\u001b[1;33m         rpath=r'../saved/bert_base_crf_train_data_1102/case3.txt')\n\u001b[0m",
      "\u001b[1;32m~\\AppData\\Local\\Temp\\ipykernel_23608\\966539767.py\u001b[0m in \u001b[0;36mtest1\u001b[1;34m(load_path, rpath)\u001b[0m\n\u001b[0;32m     13\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     14\u001b[0m     word_precision, word_recall, word_f1, precision, recall, f1 = evaluate(model, test_dataloader, rpath,\n\u001b[1;32m---> 15\u001b[1;33m                                                                        use_mask_logit=False, id2label=id2label)\n\u001b[0m\u001b[0;32m     16\u001b[0m     \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mword_precision\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mword_recall\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mword_f1\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mprecision\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mrecall\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mf1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     17\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\project\\py\\SlotMining\\eval.py\u001b[0m in \u001b[0;36mevaluate\u001b[1;34m(model, test_dataloader, record_path, use_mask_logit, id2label)\u001b[0m\n\u001b[0;32m    108\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    109\u001b[0m         \u001b[1;31m# print(tokenized_ids[0])\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 110\u001b[1;33m         \u001b[0mtokens\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mids2tokens\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtokenized_ids\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    111\u001b[0m         \u001b[1;31m# print(slot_values)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    112\u001b[0m         \u001b[1;31m# print(\"----------\")\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mNameError\u001b[0m: name 'ids2tokens' is not defined"
     ]
    }
   ],
   "source": [
    "\n",
    "def test1(load_path, rpath):\n",
    "    dict_file = pickle.load(open(r'../data/ents2ids.pkl', 'rb'))\n",
    "    t_2_ents = pickle.load(open(r'../data/intent2ents.pkl', 'rb'))\n",
    "    id2label = pickle.load(open(r'../data/id2ent.pkl', 'rb'))\n",
    "\n",
    "    model = BertNer(num_class=len(dict_file) * 2).to(device)\n",
    "    model.load_state_dict(torch.load(load_path, map_location='cpu'))\n",
    "\n",
    "    test_dataset = mydataset(data_file=r'../data/test_500.json', ent_type='ent',\n",
    "                             dict_file=dict_file, intent_2_ent=t_2_ents)\n",
    "\n",
    "    test_dataloader = DataLoader(test_dataset, batch_size=1, shuffle=False)\n",
    "\n",
    "    word_precision, word_recall, word_f1, precision, recall, f1 = evaluate(model, test_dataloader, rpath,\n",
    "                                                                       use_mask_logit=False, id2label=id2label)\n",
    "    print(word_precision, word_recall, word_f1, precision, recall, f1) \n",
    "    \n",
    "def test(load_path, rpath):\n",
    "    dict_file = pickle.load(open(r'../data/ents2ids.pkl', 'rb'))\n",
    "    t_2_ents = pickle.load(open(r'../data/intent2ents.pkl', 'rb'))\n",
    "    id2label = pickle.load(open(r'../data/id2ent.pkl', 'rb'))\n",
    "\n",
    "    model = BertNerPrompt(num_class=len(dict_file) * 2).to(device)\n",
    "    model.load_state_dict(torch.load(load_path, map_location='cpu'))\n",
    "    data_loader = PromptDataLoader(\n",
    "        dataset=my_dataset,\n",
    "        tokenizer=tokenizer,\n",
    "        template=promptTemplate,\n",
    "        tokenizer_wrapper_class=WrapperClass,\n",
    "    )\n",
    "\n",
    "    model = BertNer(num_class=len(dict_file) * 2).to(device)\n",
    "    model.load_state_dict(torch.load(load_path, map_location='cpu'))\n",
    "\n",
    "    test_dataset = mydataset(data_file=r'data/test_500.json', ent_type='ent',\n",
    "                             dict_file=dict_file, intent_2_ent=t_2_ents)\n",
    "\n",
    "    test_dataloader = DataLoader(test_dataset, batch_size=1, shuffle=False)\n",
    "\n",
    "    word_precision, word_recall, word_f1, precision, recall, f1 = evaluate(model, test_dataloader, rpath,\n",
    "                                                                       use_mask_logit=False, id2label=id2label)\n",
    "    print(word_precision, word_recall, word_f1, precision, recall, f1)\n",
    "    \n",
    "test1(load_path=r'../saved/bert_base_crf_train_data_1027_2/epoch_99_0.368567_0.358108_0.363258_0.530220_0.473765_0.500400.pt',\n",
    "        rpath=r'../saved/bert_base_crf_train_data_1102/case3.txt')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.11"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
